9.2.1- Estimació de la temperatura amb els NTC
1.- Model matemàtic de Steinhart–Hart per als NTC
Havien vist que el sensor NTC és podien descriure amb l'equeció matemàtica de Steinhart–Hart
Els termistors NTC també es poden descriure amb una equació simplificada de Steinhart–Hart amb els paràmetres següents:
que amb aquests paràmetres pren la forma
on T són graus Kelvin i és la temperatura a 25 ºC = 298,15 K
Si provem d'escriure aquesta equació de forma exponencial per facilitar el càlcul tenim
i si agrupem constants podem tindre de forma més compacta encara l'equació de Steinhart–Hart
i on les constants B (beta) i es poden calcular a partir dels paràmetres del fabricant.
Si aïllem la T de la darrera equació compacta de Steinhart–Hart que hem vist, , aquesta és l'equació que utilitzarem per calcular la Temperatura que ens dona el termistor NTC muntat sobre el divisor de tensió i connectat a Arduino.
2.- Càlculs per utilitzar el model de Steinhart–Hart amb Arduino.
Recordem que en el divisor de tensió
és compleix que la tensió però com el el podem calcular si sabem la lectura analògica d'Arduino que varia de 0 a 1024 amb l'equació: , en efecte quan la lectura és màxima i val 1024 el
Aïllem de l'equació del divisor de tensió la que ens cal per l'equació compacta de Steinhart–Hart i obtenim:
La constant B la traurem del full Datasheet del fabricant del NTC.
La la trauem de les constants que em simplificat de l'equació de Steinhart–Hart sabent que és la resistència del NTC a , llavors
és coneguda en tots els termes.
En el nostre cas hem utilitzat un NTC que segueix un curva D, fent proves agafant una beta en l'interval de 0ºC a 50ºC i així les constants han valgut:
, , B (beta) = 3891 i
Ara ja sols falta calcular la temperatura estimada amb el mètode de Steinhart–Hart amb l'equació:
i podem comprovar com la T estimada amb aquest mètode no diferiex de la llegida amb un termometre de Mercuri fent el muntatge següent.
3.- Muntatge de la pràctica.
Ens cal un vas de precipitats, un termòmetre de Mercuri que mesure de 0 a 100 ºC, un Bunsen, un tub de precipitats de vidre per posar el NTC dins una vegada estiga soldat a un parell de cables conductors.
Conectarem els cables dels NTC a la resistència de 10 K i a la targeta Arduino com veus al esquema elèctric següent.
4.- Programa per calcular Temperatura en graus centigrads.
// Copyright (C) 2010 MODAT7 // Modificat el 30-11-2011 per Carles Ferrando // This program is free software; you can redistribute it and/or modify it under the terms // of the GNU General Public License as published by the Free Software Foundation; // See the GNU General Public License for more details // ( http://www.gnu.org/licenses/gpl.html ) // // Steinhart–Hart // En aquest programa llegirem el valor d'un NTC i estimarem el seu valor en graus centigrads // amb el metode de Steinhart–Hart // #include <stdio.h> //llibreria estandard #include <math.h> //libreria de funcions matematiques //Definició de coeficients i constants float Ventrada=5.0; // [V] Tensió d'entrada al divisor de tensió float Rauxiliar=10000; // [ohm] Resistencia secundaria al divisor de tensió. float R0=10000; // [ohm] Valor de NTC nominal a 25ºC float T0=298.15; // [K] (25ºC) Valor en ºK de 25ºC float beta=3891; // [K] Paràmetre B float Rinfinit=0.0214906446; // [ohm] Paràmetre Rinfinit //Definició de variables float Veixida=0.0; // [V] Tensió donada pel divisor de tensió float RNTC=0.0; // [ohm] Resistència del NTC float TempK=0.0; // [K] Temperatura d'eixida en Kelvin float TempC=0.0; // [ºC] Temperatura d'eixida en Celsius int LecturaNTC = 3; // selecciona el pin d'entrada per al sensor de calor void setup() { Serial.begin(9600); //Configuració del monitor serie (pantalla) pinMode(LecturaNTC, INPUT); //Configuració del pin d'entrada } void loop() { Veixida=Ventrada*((analogRead(LecturaNTC))/1024.0); //Càlcul del valor de voltatge del NTC ara RNTC=(Rauxiliar*Veixida/(Ventrada-Veixida)); //Càlcul del valor la Resistencia del NTC ara TempK=(beta/log(RNTC/Rinfinit)); //Càlcul de la temperatura estimada de SteinHart-Hart en Kelvins TempC=TempK-273.15; //Càlcul de la temperatura estimada en Centigrads Serial.print("T (C)="); //imprimeix el retol Serial.println(TempC); //imprimeix T en centigrads delay(400); } |
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0